package com.mjk.common.tools.encrypt;



import com.mjk.common.tools.logger.BizLogger;
import com.mjk.common.util.ObjectUtils;

import java.security.MessageDigest;

public class MD5Util {
	private MD5Util(){}

	public static String md5(String s) {
		char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
				'A', 'B', 'C', 'D', 'E', 'F' };
		try {
			byte[] btInput = s.getBytes();

			MessageDigest mdInst = MessageDigest.getInstance("MD5");

			mdInst.update(btInput);

			byte[] md = mdInst.digest();

			int j = md.length;
			char[] str = new char[j * 2];
			int k = 0;
            for (byte byte0 : md) {
                str[(k++)] = hexDigits[(byte0 >>> 4 & 0xF)];
                str[(k++)] = hexDigits[(byte0 & 0xF)];
            }
			return new String(str);
		} catch (Exception e) {
			BizLogger.error(e);
		}
		return null;
	}

	public static String lowMd5(String s) {
		if(ObjectUtils.isEmpty(s)) {
			return null;
		}
		String md5 = md5(s);
		if(null == md5) {
			return null;
		}
		return md5.toLowerCase();
	}
}